home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d13 / ptv2n1.arc / L2.C < prev    next >
Text File  |  1991-03-26  |  978b  |  33 lines

  1. /* Finds and returns the greatest common divisor of two positive
  2.    integers. Works by subtracting the smaller integer from the
  3.    larger integer until either the values match (in which case
  4.    that's the gcd), or the larger integer becomes the smaller of
  5.    the two, in which case the two integers swap roles and the
  6.    subtraction process continues. */
  7.  
  8. unsigned int gcd(unsigned int int1, unsigned int int2) {
  9.    unsigned int temp;
  10.  
  11.    /* If the two integers are the same, that's the gcd and we're
  12.       done */
  13.    if (int1 == int2) {
  14.       return(int1);
  15.    }
  16.  
  17.    /* Swap if necessary to make sure that int1 >= int2 */
  18.    if (int1 < int2) {
  19.       temp = int1;
  20.       int1 = int2;
  21.       int2 = temp;
  22.    }
  23.  
  24.    /* Subtract int2 from int1 until int1 is no longer the larger of
  25.       the two */
  26.    do {
  27.       int1 -= int2;
  28.    } while (int1 > int2);
  29.  
  30.    /* Now recursively call this function to continue the process */
  31.    return(gcd(int1, int2));
  32. }
  33.